module dogre.camera;

import dogre.vector3;
import dogre.internals.utils;

extern(C)
{
    void call_setAspectRatio(void *ptr, float ratio);
    void call_setNearClipDistance(void *ptr, float nearDist);
    void call_setFarClipDistance(void *ptr, float farDist);
    void call_setPosition(void* ptr, float x, float y, float z);
    void call_lookAt(void* ptr, float, float, float);
}

class Camera
{
    mixin(Wrapper);
    
    ~this() {}

    void setAspectRatio(float ratio)
    {
        call_setAspectRatio(p, ratio);
    }

    void setNearClipDistance(float nearDist)
    {
        call_setNearClipDistance(p, nearDist);
    }

    void setFarClipDistance(float farDist)
    {
        call_setFarClipDistance(p, farDist);
    }
    void setPosition(Vector3 vec)
    {
        call_setPosition(p, vec.x, vec.y, vec.z);
    }
    void setPosition(float x, float y, float z)
    {
        call_setPosition(p, x,y,z);
    }
    void lookAt(float x, float y, float z)
    {
        call_lookAt(p, x, y, z);
    }
    void lookAt(Vector3 vec)
    {
        call_lookAt(p, vec.x, vec.y, vec.z);
    }
}
